0 REM THE TRANSACTOR VOLUME 6 ISSUE 02 PAGE 63 100 SYS700 ;PAL 64 ASM 110 .OPT OO 120 *=50000 130 ;VECTOR LINK EXAMPLE 131 ;VECTOR MANAGEMENT SYSTEM 132 ;SYS 50000,50003,50006 OR 50009 133 ;TO ACTIVATE OR DEACTIVATE ROUTINES 134 ;(EXAMPLES ARE IRQ-DRIVEN) 135 ;** SEE ARTICLE FOR DETAILS ** 140 IRQVEC =$0314 150 JMP CONNECT ;CONNECT RTN1 160 JMP P1DIS ;DISCONNECT RTN2 170 JMP P2CON ;CONNECT RTN2 180 JMP P2DIS ;DISCONNECT RTN2 190 ; 200 CONFLAG .BYT 0 210 CON2FLG .BYT 0 220 ; 230 P1DIS =* 240 JSR ADDCHECK ;VECTOR POINT TO RTN"? 250 BNE DERR ;NO, CAN'T DISC[145]NECT 260 LDA C[145]FLAG ;SEE [139] AL[135]Y SET[171]UP 270 BEQ P1E ;AL[135]Y DISC[145]NECTED 280 SEI ;OK, SET [164] PREV STATE 290 LDA #0 300 STA C[145]FLAG ;CLEAR C[145]NECT FLAG 310 LDA OLDIRQ 320 STA IRQVEC 330 LDA OLDIRQ[170]1 340 STA IRQVEC[170]1 350 CLI 360 P1E RTS 370 ; 380 C[145]NECT [178][172] 390 LDA C[145]FLAG ;AL[135]Y C[145]NECTED"? 400 BNE CERR ;YES, ERROR 410 LDA #255 420 STA CONFLAG ;SET CONNECT FLAG 430 LDA IRQVEC ;SAVE OLD VECTOR 440 STA OLDIRQ 450 LDA IRQVEC+1 460 STA OLDIRQ+1 470 SEI ;NOW CONNECT NEW RTN 480 LDA #DISPLIN 510 STA IRQVEC+1 520 CLI 530 RTS 540 ; 550 OLDIRQ .WOR *-* 560 ; 570 DERR =* 580 LDA #DMSG 590 JSR $AB1E ;PRT STRING 600 RTS 610 DMSG .ASC "** CAN'T DISCONNECT **" 620 .BYTE 0 630 ; 640 CERR =* 650 LDA #CMSG 660 JSR $AB1E ;PRT STRING 670 RTS 680 CMSG .ASC "** CAN'T CONNECT: ALREADY CONNECTED" 690 .BYTE 13,0 700 ; 710 ADDCHECK =* 720 ;SET Z IF IRVEC<>DISPLIN 730 LDA IRQVEC 740 CMP #DISPLIN 780 COUT RTS 790 ; 800 ; 810 DISPLIN =* 820 LDX #39 830 D1 =* 840 LDA MSG,X 850 STA $0400,X 860 LDA #1 870 STA $D800,X 880 DEX 890 BPL D1 900 JMP (OLDIRQ) 910 ; 920 MSG .ASC "*** ZAMSOFT OPERATING SYSTEM V 1.0 *** " 930 ; 940 P2DIS =* 950 JSR P2CHK ;POINTS TO RTN2"? 960 BEQ [172][170]5:JMP DERR;NO, CAN'T DISC[145]NECT 970 LDA C[145]2FLG 980 BEQ P2E ;AL[135]Y DISC[145]NECTED 990 LDA #0 1000 STA C[145]2FLG ;CLEAR C[145]NECT FLAG 1010 SEI 1020 LDA OLDIRQ2 1030 STA IRQVEC 1040 LDA OLDIRQ2[170]1 1050 STA IRQVEC[170]1 1060 CLI 1070 P2E RTS 1080 ; 1090 P2C[145] [178][172] 1100 LDA C[145]2FLG 1110 BEQ [172][170]5:JMP CERR 1120 LDA #255 1130 STA C[145]2FLG ;SET C[145]NECT FLAG 1140 LDA IRQVEC 1150 STA OLDIRQ2 1160 LDA IRQVEC[170]1 1170 STA OLDIRQ2[170]1 1180 SEI 1190 LDA #[179]PROG2 1200 STA IRQVEC 1210 LDA #[177]PROG2 1220 STA IRQVEC[170]1 1230 CLI 1240 RTS 1250 ; 1260 OLDIRQ2 .W[176] [172][171][172] 1270 ; 1280 P2CHK [178][172] 1290 LDA IRQVEC 1300 CMP #[179]PROG2 1310 BNE POUT 1320 LDA IRQVEC[170]1 1330 CMP #[177]PROG2 1340 POUT [178][172] 1350 RTS 1360 ; 1370 PROG2 [178][172] 1380 LDA 197 1390 CMP LKEY 1400 BEQ P2OUT 1410 CMP #6 1420 BNE P2OUT 1430 INC $D020 1440 P2OUT [178][172] 1450 LDA 197: STA LKEY 1460 JMP (OLDIRQ2) 1470 ; 1480 LKEY .BYT [172][171][172]